ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה
|
|
- Amice Robinson
- 5 years ago
- Views:
Transcription
1 ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים vector list iterator 2 קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים נכיר תחילה את האוסף הפשוט ביותר בספריה.vector מערך סדור של איברים מאפשר גישה לכל איבר באוסף מאפשר הוספת והסרת איברים משתמשת בתבניות :(templates) אוספי הנתונים גנריים האלגוריתמים המסופקים גנריים מאפשרת הרחבה ע"י המשתמש שומרת על יעילות הקוד הערה: הקוד בשקפים הוא חלקי וחסרות בו תכונות נוספות ומתקדמות יותר של אוספי ה- STL. דוגמאות הקוד מתרכזות בשימוש בסיסי ופשוט. 3 4
2 template<typename T> class vector { vector(); vector(const vector& c); vector(size_t num, const T& val = T()); ~vector(); T& operator[](size_t index); const T& operator[](size_t index) const; vector operator=(const vector& v); T& at(size_t loc); const T& at(size_t loc) const; void pop_back(); void push_back(const T& val); גישה בעזרת אופרטור [] אינה בטוחה אינה מוודאת את חוקיות האינדקס גישה בעזרת at() זורקת חריגה מסוג out_of_range עבור אינדקס לא חוקי int main() { vector<int> v1; // empty vector vector<int> v2(20, 8); // 20 integers, all of value 8 for(size_t i = 0; i < v2.size(); ++i) { cout << v2[i]; // Unsafe access by index for(int i = 0; i < 10; ++i) { v1.push_back(i); // Inserts items at the end of the vector while(v1.size() > 0) { v1.pop_back(); const vector<int> copy(v1); //Safely copies a vector size_t size() const; ; return 0; 5 6 template<typename T> class SafeVector : public vector<t> { SafeVector() : vector<t>() { SafeVector(int s) : vector<t>(s) { T& operator[](int i) { return at(i); const T& operator[](int i) const { return at(i); ; ניהול זיכרון ע"י המחלקה לא צריך לזכור לשחרר ידנית את המערך ניתן לשנות את גודל המערך בקלות ניתן ליצור העתקים ולבצע השמות בקלות גישה בטוחה רק כאשר משתמשים ב-() at כיצד נוכל ליצור וקטור בטוח עבור []? דומה לוקטור, אך המימוש הוא ברשימה מקושרת שימוש ברשימה מקושרת מאפשר הוספת איברים מהירה יותר, אך אינו מאפשר גישה מהירה לאמצע האוסף ההבדל העיקרי בין list ל- vector הוא במימוש, לכן לשני האוספים מנשק דומה השימוש במנשק דומה מאפשר למשתמש להחליף בקלות את סוג האוסף בשימוש גם בשלבים מאוחרים כאמור, סיבוכיות היא שיקול משני בד"כ ולכן ניתן להשתמש ב- vector, כשיש צורך ברשימה מקושרת ניתן לעבור לשימוש בה ורק בהמשך 7 8
3 template<typename T> class list { list(); list(const list& c); list(size_t num, const T& val = T()); ~list(); list operator=(const list& v); void pop_back(); void push_back(const T& val); void pop_front(); void push_front(const T& val); size_t size() const; ; נוספו מתודות להסרת והוספת איברים גם בראש הרשימה מתודות לגישה לאיבר באמצע הרשימה נעלמו כיצד נוכל לאפשר גישה למשתמש בצורה נוחה? על מנת לאפשר מעבר סדור על איברי אוסף נשתמש באיטרטור איטרטור יצטרך לאפשר את הפעולות הבאות לפחות: קידום: שינוי האיטרטור כך שיצביע לאיבר הבא קריאה: החזרת האיבר המוצבע ע"י האיטרטור השוואה: בדיקה האם שני איטרטורים מצביעים לאותו איבר int* array = new int[n]; int* i = array; cout << *i << endl; // Reading the iterator i++; // Advancing the iterator by 1 if (i == array+n) { // Comparing to iterators cout << "End of array!" << endl; איטרטור אינו מחלקה, אלא מושג (concept) למשל מצביע הוא איטרטור עבור מערך של C 9 10 כל האוספים המאפשרים מעבר על איבריהם ב- STL מספקים iterator בעזרתו ניתן לעבור על איבריהם המתודה begin() מחזירה iterator מתאים לתחילת האוסף for(vector<int>::iterator i = v.begin(); i!= v.end(); ++i) { cout << *i << endl; הדפסת איברי :vector המתודה end() מחזירה למשתמש לא אכפת כיצד ממומש האיטרטור! iterator מתאים לאיבר "דמה" אחרי האיבר האחרון for(list<int>::iterator i = l.begin(); i!= l.end(); ++i) { cout << *i << endl; הדפסת איברי :list ניתן לגשת בצורה דומה לכל אוסף ב- STL המאפשר גישה לאיבריו הטיפוס עבור ה- iterator המתאים מוגדר בתוך כל אוסף בעזרת השם container<int>::iterator 11 12
4 בנוסף כל אוסף מגדיר גם טיפוס const_iterator כך ניתן להגן על האוסף מפני שינויים כאשר הוא מוגדר כ- const טיפוס האיטרטור המוחזר נקבע בעזרת העמסה על המתודות המתאימות const vector<int> v; vector<int>::const_iterator i = v.begin(); *i = 7; // error! *i is const int& vector<int> v; vector<int>::iterator i = v.begin(); *i = 7; // O.K.! *i is int& רוב המתודות עבור האוספים משתמשות באיטרטורים כדי לציין מיקומים הוספת איבר לתוך רשימה ממוינת: list<double>::iterator i = mylist.begin(); while (i!= mylist.end() && num < *i) { ++i; mylist.insert(i, num); // Insert num before i מחיקת האיבר החמישי בוקטור: שינויים באוסף עלולים לגרום לביטול התוקף של איטרטור (invalidation) גישה לאיטרטור שאינו בתוקף אינה מוגדרת למשל vector::insert עלולה לגרום לכל האיטרטורים לצאת מתוקף myvector.erase(v.begin() + 4); מומלץ להניח את ההנחה המחמירה שכל שינוי של אוסף מוציא מתוקף את כל האיטרטורים שלו אם הנחה זו מחמירה מדי ניתן למצוא מידע מדויק בתיעוד האוסף אוספים שונים מחזירים איטרטורים שונים ל- list למשל, יש bidirectional iterator המאפשר קידום האיטרטור עם אופרטור++ והחזרתו לאחור עם אופרטור-- ל vector יש random access iterator המאפשר גם חיבור מספרים לאיטרטור וחישוב הפרש בין שני איטרטורים (בדומה למצביע) הספריה הסטנדרטית של ++C מגדירה מספר אוספים נוחים לשימוש השתמשו ב- vector במקום במערך הגישה לאוספים מתבצעת בעזרת איטרטורים כך שניתן לגשת באותה צורה לאוספים שונים ל- vector ו- list מס' רב של מתודות ואופרטורים נוספים כמעט כל פעולה שעולה בדעתכם לבצע כבר ממומשת ב- STL ניתן פשוט לחפש באינטרנט: למשל יש עוד אוספים ב- STL למשל set, stack ומבני נתונים נוספים שלא נלמדו בקורס 15 16
5 איטרטורים אלגוריתמים function objects template<typename Iterator> Iterator max(iterator start, Iterator end) { if (start == end) { return end; Iterator maximum = start; for(iterator i = ++start; i!= end; ++i) { if (*i > *maximum) { maximum = i; return maximum; int m = *max(myvector.begin(), myvector.end()); mylist.erase(max(mylist.begin(), mylist.end())); ברצוננו לכתוב פונקציה אשר מוצאת את האיבר המקסימלי כיצד נוכל לאפשר לפונקציה לעבוד על כל אוסף אפשרי? דוגמאות לשימוש: מציאת הערך הגדול ביותר בוקטור מחיקת האיבר הגדול ביותר ברשימה אלגוריתם יחיד מתאים לכל המקרים: אוספים שונים רק חלקים מהאוסף ניתנים למעבר קל להתאים קוד קיים שיעבוד עם האלגוריתם למשל שימוש באלגוריתם עבור מערך רגיל של C: מלבד מבני הנתונים ה- STL מכיל גם אוסף אלגוריתמים מועילים הניתנים להפעלה על כל מבנה נתונים מתאים template<typename Iterator, typename T> Iterator find(iterator start, Iterator end, const T& val); חלקם פשוטים: int* myarray = new int[size]; int m = *max(myarray, myarray+size); template<typename Iterator> void sort(iterator start, Iterator end); וחלקם פחות: template<typename Iterator> void random_shuffle(iterator start, Iterator end); 19 20
6 במקום לשלוח מצביעים לפונקציות ב- STL משתמשים ב- objects function Function object הוא כל עצם המעמיס את אופרטור () (אופרטור ההפעלה) class LessThanZero { bool operator()(int m) const { return m < 0; ; void f() { LessThanZero isnegative; cout << isnegative(-4) << endl; // true cout << isnegative(6) << endl; // false במקרה זה אנו מגדירים את המחלקה כפונקציה המקבלת bool ומחזירה int class SumOf { bool operator()(int a, int b, int s) { return a + b == s; ; void g() { SumOf issum; cout << issum(2,3,5) << endl; // true cout << issum(1,2,5) << endl; // false class LessThan { int n; LessThan(int n) : n(n) { bool operator()(int m) const { return m < n; ; אופרטור ההפעלה ניתן להגדרה עם מספר כלשהו של פרמטרים בניגוד למצביעים לפונקציות, ניתן לזכור מצב ב- Object Function ולכן ניתן להשתמש באותה מחלקה למס' פונקציות השונות רק בפרמטר כלשהו שימו לב להבדל בין קריאה לבנאי להפעלת האופרטור המתבצעת על עצם מהטיפוס. void h() { LessThan isless(5); LessThan isless2(8); cout << isless(4) << endl; // true cout << isless(6) << endl; // false cout << isless2(6) << endl; // true נוכל להשתמש בפונקציה שהגדרנו בקריאה לאלגוריתמים מסוימים: template<typename Iterator, typename Predicate> Iterator find_if(iterator first, Iterator last, Predicate pred) { for (; first!= last; first++) if (pred(*first)) break; return first; ניצור קריטריון מיון חדש למספרים שלמים כך שנוכל למיין לפי ערך המספר מודולו m: class LessThanModulo { int m; LessThanModulo(int m) : m(m) { bool operator()(int a, int b) { return a % m < b % m; ; vector<int> v; vector<int>::iterator i = find_if(v.begin(),v.end(),lessthan(2)); vector<int>::iterator j = find_if(v.begin(),v.end(),lessthan(7)); בכדי למיין פשוט נקרא לאלגוריתם המיון עם פרמטר נוסף: sort(v.begin(), v.end(), LessThanModulo(5)); 23 24
7 class String { int length; char* value; typedef char* iterator; typedef const char* const_iterator; iterator begin() { return value; const_iterator begin() const { return value; iterator end() { return value + length; const_iterator end() const { return value + length; ; ניזכר במחלקת String שהגדרנו בתרגול 9, כיצד נוכל להשתמש באלגוריתמים הקיימים עבור מחלקה זו? עלינו להוסיף תמיכה באיטרטורים במחלקה. במקרה של,String נוכל פשוט להשתמש במצביע ל- char שימו לב להגדרות הטיפוסים שאנו מוסיפים, כדי שהמשתמש לא יצטרך לדעת בעצמו שאנו משתמשים במצביע ל- char לא תמיד ניתן להשתמש בטיפוס קיים כאיטרטור, לפעמים נצטרך להגדיר מחלקה חדשה עבור איטרטור האלגוריתם transform מפעיל פונקציה על תחום מסוים ומציב לתחום אחר את ערך ההחזרה נשתמש בו ובפונקצית הספריה של toupper() C כדי להמיר מחרוזת לאותיות גדולות transform(str.begin(), str.end(), str.begin(), toupper); הספריה הסטנדרטית בנויה מאוספים ואלגוריתמים איטרטורים מהווים את הדבק המאפשר לשני חלקים אלו להישאר גנריים משתמשים ב- Objects Function כדי לאפשר שליחת פונקציות לאלגוריתמים אלגוריתמים איטרטורים אוספים smart_ptr shared_ptr 27 28
8 מצביעים אחראים לרובן המוחלט של שגיאות הזיכרון הצלחנו להיפטר מרוב השימושים הלא בטוחים במצביעים בעזרת שימוש בתכונות של ++C ניצול בנאים, הורסים והשמות לטיפול אוטומטי בזיכרון שימוש ב- STL ואוספים לטיפול מסודר באלגוריתמים של מבני הנתונים אם ננסה להשתמש בהורשה וב- vector מתעוררת בעיה: עבודה עם מצביעים מוחקת את כל היתרונות שהשגנו! צריך לנהל זיכרון בצורה מפורשת בכל מקום בתוכנית! vector<shape> shapes; Circle circle(3.5); shapes.push_back(circle); vector<shape*> shapes; delete shapes.back(); shapes.pop_back(); נוכל ליצור מחלקה, המתנהגת כמצביע אך מוסיפה התנהגות נוספת למשל, שחרור העצם המוצבע בזמן הריסת המצביע כלומר ניצור מצביע "חכם" יותר מה קורה במקרה וה- new השני נכשל בכל אחת מהפונקציות? template<typename T> class smart_ptr { T* data; typedef T element_type; explicit smart_ptr(t* ptr = NULL) : data(ptr) { ~smart_ptr() { delete data; T& operator*() const { return *data; T* operator->() const { return data; ; int good() { smart_ptr<shape> ptr1(new Circle(5.0)); smart_ptr<shape> ptr2(new Square(5.0)); int bad() { Shape* ptr1 = new Circle(5.0); Shape* ptr2 = new Square(5.0); כיצד יתנהג המצביע במקרה של העתקה? מה צריכה להיות ההתנהגות עבור בנאי העתקה והשמה? ניסיון ראשון: העתקת המצביע תבצע "העברת בעלות" של העצם המוצבע התנהגות זו ממומשת ב- auto_ptr הקיים בספריה הסטנדרטית של ++C מאפשרת העברת/החזרת עצמים מוקצים דינאמית מפונקציות שימוש ב- auto_ptr כדי להחזיר עצם חדש: בניגוד למצביע רגיל מוגדר בקוד מי אחראי לשחרור העצם. שימוש ב- auto_ptr כדי לחסוך העתקות: auto_ptr<shape> createmyshape() { return auto_ptr<shape>(new Circle(5.0)); auto_ptr<vector<int> > getnprimenumbers (int n) { //... בעיה! ההתנהגות עבור "העתקה" של auto_ptr אינה סטנדרטית - ההעתק אינו זהה למקור! לא ניתן לאחסן auto_ptr בתוך אוספים של ה- STL מאחר והם מסתמכים על תכונה זו כיצד ניתן ליצור מצביע חכם שגם יאפשר העתקה נכונה? 31 32
9 shared_ptr<object> Object* ptr int* counter shared_ptr<object> Object* ptr int* counter Object 1 Object 2 ניצור מצביע חכם יותר מתקדם: shared_ptr לכל עצם מוצבע נשמור מונה הצבעות, וכל המצביעים ישתמשו במונה זה על מנת לדעת מתי יש לשחרר את העצם המוצבע shared_ptr<object> Object* ptr int* counter בעזרת shared_ptr לא נצטרך לדאוג יותר לזכור לשחרר מצביעים, כאשר המצביע האחרון לעצם כלשהו ישתחרר הוא ישחרר את העצם נוכל לכתוב קוד המשתמש במצביעים בקלות וללא סכנה לבלבול לדוגמה, בקוד הבא קשה לראות אילו עצמים יש לשחרר ומתי: vector<shared_ptr<shape> > function(const vector<point>& points) { shared_ptr<shape> shape(new Polygon(points)); shared_ptr<circle> circle(new Circle(5.0)); shared_ptr<square> square(new Square(2.0)); vector<shared_ptr<shape> > vec; vec.push_back(shape); vec.push_back(circle); vec.push_back(square); vector<shared_ptr<shape> > copy = vec; copy.pop_back(); return copy; template<typename T> class shared_ptr { private: T* data; int* counter; void increasecount() { if (counter) { (*counter)++; void checkinvariant() const { assert((data && counter && *counter > 0) (!data &&!counter)); void decreasecount() { if (counter && --*counter == 0) { delete counter; delete data; counter = NULL; data = NULL; 35 36
10 typedef T element_type; 37 explicit shared_ptr(t* ptr = NULL) : data(ptr), counter(data? new int(1) : NULL) { shared_ptr(const shared_ptr<t>& other) : data(other.data), counter(other.counter) { increasecount(); template<typename S> friend class shared_ptr; template<typename S> shared_ptr(const shared_ptr<s>& other) : data(other.data), counter(other.counter) { increasecount(); 38 ~shared_ptr() { decreasecount(); template<typename S> shared_ptr<t>& operator=(shared_ptr<s>& other) { other.increasecount(); decreasecount(); counter = other.counter; data = other.data; return *this; מדוע אין צורך בבדיקת הצבה עצמית? T& operator*() const { assert(data!= NULL); return *data; T* operator->() const { assert(data!= NULL); return data; operator bool() { return data; void reset() { decreasecount(); data = NULL; counter = NULL; המרה לערך בוליאני תאפשר לנו לבדוק האם המצביע תקין כמו מצביע רגיל. המתודה reset() מאפשרת למשתמש צורה נוחה יותר לאיפוס מצביע T* get() const { return data; המתודה get() מסופקת בכדי לאפשר שימוש של המחלקה גם עם קוד ישן שאינו תומך ב- shared_ptr ; 39 40
11 template<typename T, typename S> bool operator==(const shared_ptr<t>& first, const shared_ptr<s>& second) { return first.get() == second.get(); template<typename T, typename S> bool operator!=(const shared_ptr<t>& first, const shared_ptr<s>& second) { return!(first == second); template<typename T, typename S> bool operator<(const shared_ptr<t>& first, const shared_ptr<s>& second) { return first.get() < second.get(); יתרונות: כל הקוד לניהול הזיכרון נכתב רק פעם אחת קל לחלוק עצמים אשר לא ברור מי האחרון שמשתמש בהם ניתן להשתמש בכל האוספים שראינו עם מצביעים ובפרט עם ירושות הקוד נהייה פשוט יותר ועמיד יותר בפני שגיאות זיכרון עדיין קיימות מספר בעיות: shared_ptr אינו מתאים לאחסון מצביע למערך! כי השחרור הוא ע"י delete ולא delete[] ניתן ליצור בקלות shared_array שיתאים לבעיה זו, אבל ממילא עדיף!vector המצביעים לא ישוחררו אם קיימים קשרים מעגליים במקרה זה יש לנקות את המצביעים בצורה מפורשת עם reset פתרון טוב יותר למקרה זה דורש היכרות עם מצביע חכם נוסף והזמן קצר מלהכיל אותו 41 42
תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים
תרגול 12 Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים ספרית התבניות הסטנדרטית קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים. משתמשת בתבניות :(templates) אוספי הנתונים
More informationמבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator
מבוא למדעי המחשב 2017 תרגול 8 רשימה משורשרת כללית, Comparator בתרגול היום. LinkedList בניית ההכללה מ- LinkIntList תרגול המבנה ושימושיו ממשקים: Comparator Sorted Linked List ל- LinkedList ע"י שימוש ב- Comparator
More informationת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1
קורס תכנות שיעור תשיעי: רשימות מקושרות 1 הקצאה דינאמית של מערכים דו-ממדיים )לפחות( שלוש גישות אפשריות:.1 מערך של מערכים מצביעים לתוך מערך "גדול".2 3. מצביע יחיד למערך גדול 2 The Interface 3 (Simple) Usage
More informationמערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1
מערכים שעור מס. 4 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 למה מערכים? ברצוננו לאחסן בתוכנית ציוני בחינה כדי לחשב את ממוצע הציונים וסטיית התקן. נניח ש 30 סטודנטים לקחו
More informationהנכות 1 םוכיס לוגרת 13 1
תוכנה 1 סיכום תרגול 13 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers
More informationלתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions
מבוא לתיכנות עם MATLAB 23427 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 203 Based on slides of Dr. Eran Eden, Weizmann 2008 ביטויים לוגיים דוגמא: תקינות
More informationלתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions
מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 >>g = [89 91 80 98]; >>p
More informationתוכנה 1 תרגול מספר 13
1 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 ו- HASHCODE EQUALS 3 תזכורת: המחלקה Object package
More informationתוכנה 1 תרגול מספר 13
1 2 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( ו- HASHCODE EQUALS חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 3 4 package java.lang; תזכורת: המחלקה
More informationתוכנה 1 סמסטר א' תשע"א
General Tips on Programming תוכנה 1 סמסטר א' תשע"א תרגול מס' 6 מנשקים, דיאגרמות וביטים * רובי בוים ומתי שמרת Write your code modularly top-down approach Compile + test functionality on the fly Start with
More informationASP.Net Web API.
ASP.Net Web API 1 מה זה? Web API View בלבד ולא Data אותו מממש השרת והוא מחזיר לקליינט API הוא Web API הבקשה והתשובה הן בפרוטוקול Http\Https הקליינטים של Web API יכולים להיות רבים : אפשר להשתמש גם בMVC
More informationתור שימושים בעולם התוכנה
מבוא למדעי המחשב הרצאה : Queue, Iterator & Iterable תור מבנה נתונים אבסטרקטי תור שימושים בעולם התוכנה השימושים של תורים בעולם התוכנה מזכירים מאוד תורים במציאות: )VoIP( )YouTube( מקלדת שידור סרט באינטרנט
More informationתכנות מונחה עצמים משחקים תשע"ו
move semantics 1 תכנות מונחה עצמים ופיתוח משחקים תשע"ו סמנטיקת ההעברה semantics( )Move move semantics 2 מטרה האצה של התוכניות, שיפור בביצועים על ידי חסכון בבנייה והעתקה של אובייקטים זמניים move semantics
More informationתוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות
טיפוסי השפה תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות טיפוסים יסודיים (פרימיטיביים): 8 טיפוסים מוגדרים בשפה שמיועדים להכיל ערכים פשוטים: מספרים שלמים: byte, short, int, long מספרים ממשיים: float,
More informationComputer Programming A תרגול 9
Computer Programming A תרגול 9 1 מטרת התרגול הקצאת זיכרון מבנים רשימות דינאמית ניהול הזיכרון בתוכנית עד כה כל המשתנים שראינו היו לוקאליים. משך הקיום של משתנים מקומיים הוא הזמן אשר הפונקציה בה הם נמצאים
More informationתוכנה 1 * לא בהכרח בסדר הזה
תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר
More informationהנכות 1 םוכיס לוגרת 13 1
תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב שירותים במנשק הם תמיד
More informationPractical Session - Heap
Practical Session - Heap Heap Heap Maximum-Heap Minimum-Heap Heap-Array A binary heap can be considered as a complete binary tree, (the last level is full from the left to a certain point). For each node
More informationתוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב
תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב Today Static vs. Dynamic binding Equals / hashcode String Immutability (maybe) 2 Static versus run-time
More informationTutorial 10. Introduction to C++ שימו
Introduction to ++ שימו תרגול זה אינו התרגול הרישמי של הקורס. הוא מבוסס על חוברת התרגולים אך מכיל שינויים, הסברים נוספים ודוגמאות שונות או נוספות. + + תוכנ ית רא שונה ב הכרו ת עם + + תרגול // First ++
More informationAlgorithms. Intro2CS week 5
Algorithms Intro2CS week 5 1 Computational problems A computational problem specifies an inputoutput relationship What does the input look like? What should the output be for each input? Example: Input:
More informationהנכות 1 םוכיס לוגרת 13 1
תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים
More informationתרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }
נושאי התרגול: מה הן פונקציות הגדרת פונקציה,קריאה לפונקציה העברת ארגומנטים,החזרת ערך או void העברת משתנים פרימיטיביים ומערכים לפונקציה העמסה של פונקציות תרגול 4 פונקציות מוטיבציה לעיתים,אנו נזקקים לבצע
More informationתרגול מספר 3: מערכים
היום בתרגול:.1.2 תרגול מספר 3: מערכים מערך חד-מימדי: מה זה מערך ולמה צריך אותו? איך מגדירים? איך זה נראה בזכרון? דוגמאות לשימוש במערך חד-מימדי השוואה בין משתנה פרימיטיבי למשתנה שאינו פרימיטיבי מערך דו-מימדי:
More informationתוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes
תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes class Outer { static class NestedButNotInner {... class Inner {... מחלקות מקוננות NESTED CLASSES 2 מחלקה מקוננת Class) )Nested
More informationIntroduction to Programming in C תרגול 8
Introduction to Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאה דינמית מבנים תאור הזיכרון של המחשב: מצביעים ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,
More informationקורס תכנות בשיעור הקודם למדנו על רקורסיה שיעור שישי: מערכים פונקציה רקורסיבית שאלה חישוב נוסחאות רקורסיביות בשפת C
בשיעור הקודם למדנו על רקורסיה פתרנו את בעיית מגדלי הנוי בעזרת רקורסיה כלומר בעזרת פונקציה שקוראת לעצמה. רקורסיה מאפשרת לנו לפתור בעיה "גדולה" בעזרת פתרון של בעיות "קטנות" המרכיבות אותה. קורס תכנות שיעור
More informationתוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות
תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5
More informationתזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים
מבוא למדעי המחשב הרצאה 2: עצי חיפוש בינאריים תזכורת: עץבינארי בנוסףלרשימהמקושרת ומערך, הצגנומבנהנתונים קונקרטיחדש עץבינארי עץבינארימורכבמ: שורש תת-עץשמאלי תת-עץימני A B C D E F G 2 תזכורת: שורש ותתי-עצים
More informationעבודה עם STL. )Dmitry Korolev
עבודה עם STL )Dmitry Korolev יניב סבו )מבוסס על המאמר של הקדמה STL = Standard Template Library הספרייה הסטנדטית של ++C. כוללת את רוב האלגוריתמים ומבני הנתונים הבסיסיים במדעי המחשב. Heavily parameterized
More informationהנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת
תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices
More informationהנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת
תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start
More informationמבוא לתכנות ב- JAVA מעבדה 2
מבוא לתכנות ב- JAVA מעבדה 2 מה בתרגול טיפוסים פרימיטיביים המרות טיפוסים אופרטורים יחסיים ולוגיים משפט if-else בתרגול הקודם טיפוסים פרימיטביים לייצוג מספרים שלמים וממשיים ואופרטורים לפעולות בין מספרים.1
More informationקורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &
כתובות בזיכרון קורס תכנות int x = 10; char c = a ; 10 784658 'a' 26537 שם x כתובת 784658 שיעור שביעי: מבנים, הקצאת זיכרון דינאמית 26537 c 1 הגדרת מצביע variable( )pointer כתובות בזכרון האופרטור & מחזיר
More informationלתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions
מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 motivation Proper academic
More informationתוכנה 1 * לא בהכרח בסדר הזה
תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים - תזכורת מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות )חתימות(. מימוש דיפולטיבי
More informationSmart Pointers Nir Adar
7.1.2005 גירסה 1.00 Smart Pointers מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות
More informationPractical Session No. 14 Topological sort,amortized Analysis
Practical Session No. 14 Topological sort,amortized Analysis Topological- Sort Topological sort Ordering of vertices in a directed acyclic graph (DAG) G=(V,E) such that if there is a path from v to u in
More informationתוכנה 1 תרגול 2: מערכים ומבני בקרה
תוכנה 1 תרגול 2: מערכים ומבני בקרה 2 Useful Eclipse Shortcuts Ctrl+1 quick fix for errors, or small refactoring suggestions Ctrl+SPACE code content assist (auto-completion) Auto completion for main create
More informationמשתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1
משתנים שעור מס. 2 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 תפקיד המשתנים הצהרה על משתנה השמת ערך במשתנה int a, b, c; a = 1234; b = 99; c = a + b; משתנים מאפשרים לנו לשמור
More informationתרגול 6 רקורסיה ותכנות מונחה עצמים
מבוא למדעי המחשב 2017 תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 1 ראינו בהרצאה רקורסיה תכנות מונחה עצמים: מחלקה ואובייקט שדות, בנאים ושיטות מימוש מערך דינאמי של ראשוניים בתרגול היום רקורסיה הדפסת
More informationקורס תכנות שיעור שישי: מחרוזות, מצביעים
קורס תכנות שיעור שישי: מחרוזות, מצביעים מערכים אוסף סדור של משתנים מאותו סוג המשתנים נמצאים ברצף בזיכרון העברת מערך לפונקציה Define רקורסיה במערך מערכים דו מימדיים 2 מחרוזות מהי מחרוזת? רצף של תוים ייצוג
More informationסכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)
1 תבנית צבירה תבניות אלגוריתמיות לפעולות רקורסיביות תבנית צבירה לסדרת ערכים: סכום (סדרת ערכים) החזר את ערך הקצה + סכום (סדרת הערכים ללא ערך הקצה) דוגמא: פעולה המחזירה את סכום הספרות שבמספר שלם לא שלילי
More informationמבוא לתכנות בשפת C. Tzachi (Isaac) Rosen
מבוא לתכנות בשפת C מצביעים והקצאה דינאמית כתובות של משתנים לכל משתנה כתובת של המקום שלו בזיכרון כבר ראינו: שם של מערך הוא למעשה הכתובת של התא הראשון )באינדקס 0( של המערך להזכירכם: תא של מערך הינו משתנה
More informationמבוא לתכנות ב- JAVA תרגול 7
מבוא לתכנות ב- JAVA תרגול 7 רקורסיה - הקדמה הגדרה רקורסיבית: חדר הוא מסודר אם צד שמאל שלו מסודר שלו מסודר. וצד ימין שיטת פתרון רקורסיבית: פתרון מופעים פשוטים יותר של בעיה בכדי לפתור את הבעיה המקורית רקורסיה
More informationתוכנה 1 ומחלקות פנימיות
תוכנה 1 Design Patterns ומחלקות פנימיות תרגול 11: 1 Design Patterns A general reusable solution to recurring design problems. Not a recipe A higher level language for design Factory, Singleton, Observer
More informationקורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה
רשימה מקושרת רשימה היא אוסף סדור של ערכים פעולות רשימה לעומת מערך קורס תכנות שיעור עשירי: מיונים, חיפושים, קצת ניתוח זמני ריצה, קצת תיקון טעויות ועוד על רשימות 3 5 7 9 typedef struct node int data; struct
More informationתוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב
תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 STATIC VS. DYNAMIC BINDING 3 Static versus Dynamic Binding public class Account
More informationהקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא
ת כו נו ת ברמת ה מחלקה (static members) אוהד ברזילי תכנות מ תקד ם בשפת Java אוניברסיטת ת ל אביב static keyword שדות המוגדרים כ static מציינים כי הם מוגדרים ברמת המחלקה ולא ברמת עצם כל העצמים של אותה מחלקה
More informationשאלה 1 מהו הפלט של התוכנית הבאה:
תרגול חזרה שאלה 1 מהו הפלט של התוכנית הבאה: public sttic int wht(int n) { int i; int sum=0; if(n == 0) return 1; for (i=0; i
More informationמבני נתונים תכנות מונחה עצמים מבני נתונים. מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers ADT מערך דינמי מחסנית
מבני נתונים 1 תכנות מונחה עצמים מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers מבני נתונים ADT מערך דינמי מחסנית 2 1 מבני נתונים תור - Queue Iterators רשימות מקושרות "רגילות" 3 מבנה נתונים
More informationרזח יליגרתו םי יראני ב ם
מבוא למדעי המחשב עצים בינאריים ותרגילי חזרה תרגול 13: עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק )בלי צמתים( או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם שאלה עץ בינארי
More informationAmortized Analysis, Union-Find,
Practical Session No. 13 Amortized Analysis, Union-Find, AMORTIZED ANALYSIS Refers to finding the average running time per operation, over a worst-case sequence of operations. Amortized analysis differs
More informationEngineering Programming A
Engineering Programming A תרגול 5 25.11.2012 מערכים חד-מימדיים )תזכורת( לדוגמא: מערך בשם Arr בגודל 8 שאיבריו מטיפוס int 3 7 5 6 8 1 23 16 0 1 2 3 4 5 6 7 ב - arr[0] ב יושב ערך שהוא המספר השלם 3 arr[1]
More informationProgramming for Engineers in Python
Programming for Engineers in Python Lecture 9: Sorting, Searching and Time Complexity Analysis Autumn 2011-12 1 Lecture 8: Highlights Design a recursive algorithm by 1. Solving big instances using the
More informationProgramming for Engineers in Python
Programming for Engineers in Python Lecture 9: Sorting, Searching and Time Complexity Analysis Autumn 2011-12 1 Lecture 8: Highlights Design a recursive algorithm by 1. Solving big instances using the
More informationתוכנה 1 * לא בהכרח בסדר הזה
תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר
More information$ gcc check.c. $ a.out. $ gcc check.c -o check. $ check. $ gcc -Wall check.c -o check. #include <stdio.h>
תכנות בסיסי בשפת C תוכנית ראשונה תוכנית ב - C מורכבת מאוסף פונקציות והגדרות טיפוסים. C איננה שפה object oriented כך שאין בה מושגים של מחלקה ואובייקט. נתחיל בתוכנית הראשונה המסורתית, זו המדפיסה הודעה יחידה
More informationפרק 15 טיפוס חדש: מבנים שימוש במבנים שימוש במבנים שימוש במבנים
פרק 15 ב- C מבנים טיפוס חדש: מבנים 1 מבנה (structure) הוא טיפוס מורכב בשפת C (בניגוד לטיפוס בסיסי). זהו טיפוס שמיועד לאיחוד קבוצת משתנים תחת שם אחד. משתנים אלו נקראים השדות של המבנה, והם יכולים להיות מטיפוסים
More information- MEAN Stack חזרה. MongoDB - as the database Express - as the web framework AngularJS - as the frontend framework NodeJS- as the server platform
הדר פיקאלי תשע"ו - 2016 - MEAN Stack חזרה בניית web applications כרוכה בשימוש בטכנולוגיות וכלים שונים, להתמודדות עם: מסד נתונים, פעולות בצד השרת, טיפול בצד הלקוח והצגה של הנתונים. מהו?MEAN "MEAN is a fullstack
More informationמבוא למדעי המחשב 2018 תרגול 7
מבוא למדעי המחשב 2018 תרגול 7 רשימות משורשרות, רקורסיית זנב 1 ראינו בהרצאה רשימות משורשרות רקורסיית זנב 2 בתרגול היום רשימות משורשרות עוד שיטות מחלקה רקורסיית זנב היפוך מחרוזות, חיפוש בינארי 3 רשימות משורשרות
More informationמבוא לתכנות ב- JAVA תרגול 6
מבוא לתכנות ב- JAVA תרגול 6 מה בתרגול )methods( פונקציות/שיטות ב- Java הגדרת פונקציה קריאה/הפעלה העברת ארגומנטים ערכי החזרה מבוא לפונקציות- שימוש חוזר בקוד נניח שבמהלך תוכנית נדרשתם לחשב את הסכום של המספרים
More informationמבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5
מבוא לתכנות ב- JAVA תרגול 5 Ipc161- practical session 5 מה בתרגול מערכים דו ממדיים )methods( פונקציות/שיטות ב- Java הגדרת פונקציה קריאה/הפעלה העברת ארגומנטים ערכי החזרה מערך דו ממדי מערך של מערכים חד ממדיים
More informationנתונות שתי המחלקות הבאות:
ממבחנים שאלות מבנה הנתונים תור (queue) הוא מבנה הדומה למחסנית (stack) שנלמדה בקורס. לתור ניתן להוסיף איברים (ע"י פעולה הנקראת (enqueue וניתן להסיר את האיבר שבראש התור,(dequeue) כלומר האיבר הוותיק ביותר
More informationתוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays
מערכים Array: A fixed-length data structure for storing multiple values of the same type תוכנה 1 Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds: 1 3 5 7 9 11 13 15 odds.length
More informationתוכנה 1 3 תרגול מס' מערכים ומבני בקרה
תוכנה 1 3 תרגול מס' מערכים ומבני בקרה מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds:
More informationעקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter.
עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter. Type Inference System The Type Inference System is a Scheme Implementation of the algorithm for Type Checking and Inference
More informationמבוא לתכנות ב- JAVA מעבדה 4
מבוא לתכנות ב- JAVA מעבדה 4 מה בתרגול מערכים מחרוזות מערך חד מימדי מערך הוא מבנה המחזיק סדרה של איברים מאותו טיפוס גודל המערך הוא קבוע )נקבע בעת יצירת המערך( הגישה לכל איבר היא באמצעות אינדקס למה לי מערך?
More informationמבוא למדעי המחשב תרגול 13: עצים בינאריים
מבוא למדעי המחשב תרגול 13: עצים בינאריים עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק (בלי צמתים) או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם תרגיל 1 עץ בינארי מסודר
More informationתוכנה 1. תרגול מס' 3 עבודה עם מחרוזות )Strings( מתודות )Methods( העברת פרמטרים
תוכנה 1 תרגול מס' 3 עבודה עם מחרוזות )Strings( מתודות )Methods( העברת פרמטרים שלבי הפיתוח - חזרה קצרה ישנם שני שלבים נפרדים: שלב פיתוח התוכנית בשלב זה אנו משתמשים במהדר )קומפיילר( כדי להמיר קבצי.java )קבצי
More informationב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'
אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : א' מועד קיץ סמ' שנה תשע"ז 3 שעות משך
More informationמבוא לתכנות מערכות מבחן מועד א' סמסטר חורף
הפקולטה למדעי המחשב פרופ' גיל ברקת נועם שגב, שרי דואק, רן ברואר, דור כהן הטכניון מכון טכנולוגי לישראל 70.70.07.4 מבוא לתכנות מערכות 024.00 מבחן מועד א' סמסטר חורף 07.207.4 הוראות כלליות משך המבחן: 081
More informationתוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization
מערכים תוכנה 1 Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 תרגול 2: מערכים
More informationמצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }
שאלה : (4 נקודות) א. ב. ג. (5 נקודות) הגדירו את המונח race-condition במדוייק לא להשמיט פרטים. ספקו דוגמא. (5 נקודות) מהו? Monitor נא לספק הגדרה מלאה. ( נקודות) ( נקודות) ציינו כמה תהליכים יווצרו בקוד הבא
More information<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)
הנחיות כלליות: תאריך הבוחן: 10.5.2018 שם המרצה: מני אדלר,מיכאל אלחדד, ירון גונן מבחן בקורס: עקרונות שפות תכנות מס' קורס: 202-1-2051 מיועד לתלמידי: מדעי המחשב והנדסת תוכנה שנה: ב' סמסטר: ב' משך הבוחן: 2
More informationמחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(
מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( תוכנה 1 תרגול 8 String Immutability Strings are constants String s = " Tea "; s = s.trim(); s = s.replace('t', 'S'); s 1 2 3 " Tea " "Tea" "Sea"
More informationAdvanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet. Instructor: Tom Mahler
Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet Instructor: Tom Mahler Course Objective הודעות כלליות מעבר על דף מידע OSI Model Classical 7 layers model IP model Application
More informationתרגול 7 רשימות משורשרות, רקורסיית
מבוא למדעי המחשב 2018 תרגול 7 רשימות משורשרות, רקורסיית זנב 1 ראינו בהרצאה רשימות משורשרות רקורסיית זנב 2 בתרגול היום רשימות משורשרות עוד שיטות מחלקה רקורסיית זנב היפוך מחרוזות, חיפוש בינארי 3 רשימות משורשרות
More informationמדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch
1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות שאלה פרק א :1 m a b k k b x I x > a II x < b פלט I && II 0 8 12 8 4 1 9 11 2 10 11 9 8 2 12 35 13 העמודות המסומנות בכחול אינן עמודות חובה בפתרון. שאלה 2:
More informationProgramming in C תרגול 8
Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאת זיכרון דינאמית Malloc free מצביעים תאור הזיכרון של המחשב: ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,
More informationExams questions examples
Exams questions examples 1 Exam example 1. y - x what נק' ( לפניך הפעולה הרקורסיבית מקבלת כפרמטרים שני מספרים שלמים ו 10 )? מה יהיה הפלט כתוצאה מזימון הפעולה what public static int what(int x, int y) if(x
More informationSimple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService {
Simple Web Service WS פתיחת פרוייקט File New Project ASP.Net web service project - >http://localhost/webservice1 יצירת שירות המחשב חיבור וחילוק 2 מספרים : הטיפוסים הבסיסיים using System; איסוף וניהוף אוספי
More informationהיצביט ומ - ןוכית ת וי נבת
תבני ו ת תיכון Patterns) (Design תבנ יו ת תיכון - מו טיבציה בחיי היום יום אנחנו מתארים דברים תוך שימוש בתבניות חוזרות: "מכונית א' היא כמו מכונית ב', אבל יש לה 2 דלתות במקום 4" "אני רוצה ארון כמו זה, אבל
More informationתרגול 3 מערכים ופונקציות
מבוא למדעי המחשב 2018 תרגול 3 מערכים ופונקציות מערכים מאפשרים עבודה עם מקבצים של נתונים פונקציות מאפשרות אבסטרקציה והאחדה של הקוד ראינו בהרצאה מערכים הצהרה, אתחול, גישה לאיברים במערך יצוג בזיכרון ובטבלת
More informationChapter 11.2 Linked lists ( )
Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds מערכים, מטריצות דלילות, ורשימות מקושרות חומר קריאה לשיעור זה Chapter. Linked lists ( ) Geiger & Itai, מערך מוגדר ע"י הפעולות
More informationרשימות דילוגים Skip Lists
Lecture6 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds רשימות דילוגים Skip Lists Skip lists: A probabilistic Alternative to Balanced Trees, William Pugh, Communications of the
More informationמבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2
מבוא למדעי המחשב תירגול 2: לולאות, קלט, וטיפוסים 1 תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char 2 לולאת while 3 לולאת while קטע קוד מתבצע שוב ושוב כל עוד תנאי מתקיים int number = 40; while(number>0)
More informationCommunication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner
Communication Networks (0368-3030) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University Allon Wagner Kurose & Ross, Chapter 3.5.5, 3.7 (5 th ed.) Many slides adapted from: J. Kurose
More informationמבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.
מבוא לתכנות תוכנית ראשונה שעור מס. 1 דרור טובי דר' 1 מבוא לתכנות בשפת ++C C \ שלום!! מרצה ד"ר דרור טובי, drorto@ariel.ac.il שעות קבלה: יום ב, 10-12 טלפון )אריאל( 03 9076547 אתר הקורס: http://www.ariel.ac.il/cs/pf/tdror/courses/cpp
More informationPractical Session #4 - ADTs: Array, Queue, Stack, Linked List
Practical Session #4 - ADTs: Array, Queue, Stack, Linked List Basic Data Structures and Abstract Data Types ADT Array Abstract Data Type A collection of data-storing entities with operations to create,
More informationNir Adar
שפת Java למתכנתי ++C - חלק שני מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות
More informationתוכנה 1 מבני נתונים גנריים
תוכנה 1 מבני נתונים גנריים תרגול 8 2 Java Collections Framework Collection: a group of elements Interface Based Design: Java Collections Framework Interfaces Implementations Algorithms 3 Online Resources
More informationמבוא למדעי המחשב תירגול 3:
מבוא למדעי המחשב תירגול 3: לולאות, קלט, וטיפוסים תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char מבוא למדעי המחשב מ' - תירגול 3 2 לולאת while מבוא למדעי המחשב מ' - תירגול 3 3 לולאת while
More informationJava פעולות עוברות בירושה סביבת יסודות מדעי המחשב נספח הורשה
1 נספח הורשה פעולות עוברות בירושה.1 הפעולה ToString המחלקה קלף Card נכתוב את המחלקה המגדירה עצם מסוג קלף. תכונות המחלקה: מחרוזת המתארת את צורת הקלף )תלתן, מעוין, לב, עלה( מספר שלם בתחום 13-1 )כולל( המהווה
More informationהפלט אחרי הביצוע של ההוראה :what3(root)
שאלה )18 1 נקודות( סעיף א. )11 נקודות( הפלט אחרי הביצוע של ההוראה :what3(root) 15 10 20 26 12 18 25 3 28 14 13 סעיף ב. )3 נקודות( הפונקציה what1 מוסיפה את האיבר node בסוף הרשימה ומעדכנת את ראש הרשימה *ph
More informationתכנות מתקדם בשפת C משתנים
תכנות מתקדם בשפת C משתנים 1 משתנים סוגי משתנים בשפת C ההבדלים בין סוגי המשתנים השונים 2 /* This program computes m to the power of n */ /* Assumptions: m is an integer; n is a positive integer */ #include
More informationמבוא למדעי המחשב תרגול 12 מחסנית )Stack( memoization
מבוא למדעי המחשב 2017 תרגול 12 מחסנית )Stack( memoization בתרגול היום מחסנית בדיקת איזון סוגריים בביטוי אריתמטי משולש Pascal לא רקורסיבי memoization דוגמאות שימוש: בעיית העודף תזכורת: מחסנית :)stack( מבנה
More informationתרגול 3 מערכים ופונקציות
מבוא למדעי המחשב 2017 תרגול 3 מערכים ופונקציות מערכים מאפשרים עבודה עם מקבצים של נתונים פונקציות מאפשרות אבסטרקציה והאחדה של הקוד ראינו בהרצאה מערכים הצהרה, אתחול, גישה לאיברים במערך יצוג בזיכרון ובטבלת
More informationComputer Programming Summer 2017
Computer Programming Summer 2017 תרגול 6 פונקציות 1 פונקציות פונקציות מאפשרות שימוש בקטעי קוד כקופסה שחורה ללא צורך לדעת את פרטי המימוש )מספיק לדעת מה עושה הפונקציה ולא איך(. למשל: הפונקציה strlen מהתירגול
More information- מבחן. - 4 עבודות ב- JAVA. הגשה בזוגות דרך ה- System Submission
1 - מבחן. - 4 עבודות ב- JAVA 60% 40% הגשה בזוגות דרך ה- System Submission 2 UML Class Diagrams Packages Class Path JAR Files חלק ראשון: חלק שני: 3 An abstraction of software features A structure that singles
More information